//
//  EmoticonPackage.swift
//  01-表情键盘
//
//  Created by Apple on 15/9/30.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit

/// 表情包模型
class EmoticonPackage: NSObject {
    /// 表情包目录
    var id: String?
    /// 分组名称
    var group_name_cn: String?
    /// 表情模型数组
    lazy var emoticons = [Emoticon]()
    
    init(dict: [String: AnyObject]) {
        super.init()
        
        id = dict["id"] as? String
        group_name_cn = dict["group_name_cn"] as? String
        
        if let array = dict["emoticons"] as? [[String: String]] {
            
            // 定义计数
            var index = 0
            for var d in array {
                
                // 判断字典中是否有 png 的 key
                if let png = d["png"],
                    dir = id {

                        // 再给 png 图像设置数值的同时，拼接表情包所在路径
                        // com.sina.lxh/lxh_xiahaha.png
                        d["png"] = dir + "/" + png
                }
                
                // 遍历数组，追加表情
                emoticons.append(Emoticon(dict: d))
                
                // 判断是否到达20
                index++
                if index == 20 {
                    // 插入删除按钮
                    emoticons.append(Emoticon(isRemove: true))
                    // 计数复位
                    index = 0
                }
            }
        }
        
        appendEmpty()
    }
    
    /// 追加空表情
    private func appendEmpty() {
        let count = emoticons.count % 21
        
        print("分组名称 \(group_name_cn) 剩余数量 \(count)")
        // 最近[没有表情]的和默认[不能被21整除]的需要添加
        if emoticons.count > 0 && count == 0 {
            return
        }
        
        // 添加空表情
        for _ in count..<20 {
            emoticons.append(Emoticon(isEmpty: true))
        }
        // 最后需要添加一个删除按钮
        emoticons.append(Emoticon(isRemove: true))
    }
    
    override var description: String {
        let keys = ["id", "group_name_cn", "emoticons"]
        
        return dictionaryWithValuesForKeys(keys).description
    }
}
